package com.guigu.eduservice.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 纠纷表（存储交易过程中的纠纷及处理记录）
 * </p>
 *
 * @author janecraft
 * @since 2025-09-27
 */
@Data
public class Dispute implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 纠纷唯一标识
     */
    @TableId(value = "dispute_id", type = IdType.AUTO)
    private Long disputeId;

    /**
     * 关联订单表order_id（唯一，一个订单仅一个纠纷记录）
     */
    private Long orderId;

    /**
     * 关联用户表user_id（买家，纠纷发起方或参与方）
     */
    private Long buyerId;

    /**
     * 关联用户表user_id（卖家，纠纷参与方）
     */
    private Long sellerId;

    /**
     * 纠纷原因（如"设备与描述不符"、"逾期未发货"）
     */
    private String disputeReason;

    /**
     * 纠纷证据（图片URL，多个用逗号分隔，如聊天记录、设备照片）
     */
    private String disputeEvidence;

    /**
     * 纠纷状态（0-待受理，1-处理中，2-已解决，3-仲裁中，4-仲裁完成）
     */
    private int disputeStatus;

    /**
     * 纠纷申请时间（买家/卖家发起纠纷的时间）
     */
    private LocalDateTime applyTime;

    /**
     * 受理时间（dispute_status=1时必填，客服接收纠纷的时间）
     */
    private LocalDateTime acceptTime;

    /**
     * 关联操作员表operator_id（处理客服，dispute_status=1时必填）
     */
    private Long handlerId;

    /**
     * 处理方案（dispute_status=1时填写，如"退款5000元"）
     */
    private String processingPlan;

    /**
     * 仲裁结果（dispute_status=4时必填，平台仲裁的最终结论）
     */
    private String arbitrationResult;

    /**
     * 仲裁时间（dispute_status=4时必填，仲裁结果生成的时间）
     */
    private LocalDateTime arbitrationTime;

    /**
     * 解决时间（dispute_status=2时必填，纠纷完全处理完成的时间）
     */
    private LocalDateTime solveTime;

    /**
     * 记录创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 记录更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

}
